home *** CD-ROM | disk | FTP | other *** search
- ID:BU Bus-Mastering Devices and QEMM-386
- Quarterdeck Technical Note #121
- by Stan Young
-
-
- Bus-Mastering Devices, QEMM-386 and Virtual DMA Services
-
- Q: What is a bus-mastering device and what problems might be seen
- when using one?
-
- Bus-mastering devices are ones which do their own direct memory
- addressing (DMA). DMA is done without going through the machine's
- processor. The most common bus-mastering devices we see currently
- are SCSI hard disk controllers, but technically, other types of
- devices could be bus-mastering as well. The problem seen with
- bus-mastering devices is that while they are high-performance
- devices and quite often found on 386 and 486 machines, they are
- unfortunately, in their design, incompatible with one of the
- operating modes of the 80386 and i486 processors -- the Virtual 86
- mode.
-
- Specifically, the problem is that the device puts data into
- absolute memory addresses and assumes that the contents of those
- memory addresses will always remain constant. However, on a 386
- machine with the processor in Virtual 86 mode, this can often be
- an incorrect assumption. In Virtual 86 mode, the same physical
- memory addresses can, at any given moment hold different data,
- depending on which virtual machine is current.
-
- If you are using a bus-mastering device on a 386 or 486 that is in
- Virtual 86 mode and actual memory paging is occurring (the
- switching from one virtual machine to another), your machine will
- probably hang when you use the bus-mastering device.
-
- A "real world" example:
-
- Quarterdeck first became aware of the problem from customers who
- had bus-mastering SCSI hard disk controllers. They reported that
- they could boot their machines, start our multitasking DESQview
- software and as long as they ran only one application, their system
- ran fine. As soon as they opened a second application, the system
- would hang. The problem was also seen by users who were not using
- DESQview, but who were using the LOADHI feature of QEMM-386.
-
- In this case, the hang occurred because the disk controller would
- prepare to load some absolute memory addresses with data pertaining
- to an application that was running, but by the time the data was
- actually transferred to these addresses, QEMM-386 had switched the
- memory map. Those absolute memory addresses no longer belonged to
- the application which could process the data. They belonged
- instead to some other application or process. In theory, this
- could have caused data corruption, but in reality it never did.
- The memory corruption was typically so extensive that the systems
- simply hung as soon as a change in the memory map occurred.
- Q: How can the problem with running Bus-mastering devices in
- Virtual 86 mode be corrected?
-
- A: There are four possible solutions:
-
- 1) QEMM 5.00 (and later versions) has a DB=xx (DISKBUF=xx)
- parameter which should prevent QEMM-SCSI problems at the expense
- of a little conventional memory. xx is the number of K used for
- buffering. Any value for xx is sufficient to correct the problem.
- DISKBUF=2 would be fine for most cases. Higher numbers, say up to
- 10 might improve performance. Setting DISKBUF to more than 10 is
- probably a waste of memory.
-
- This approach will not work in cases where the bus-mastering
- device is something other than a hard disk.
-
- 2) Similarly, the drivers of many bus-mastering hard disks have
- buffering options. Check the documentation for your disk
- controller to see if the driver has a parameter to set up buffering
- for disk operations. Some drivers will also document parameters
- that are specific to 386 operations. For example, the early
- Adaptec drivers SCSIHA.SYS and AHA1540.SYS included both 386 and
- disk buffering options invoked by the parameters "/v386" and
- "/b:64." "/v386" stands for virtual 386; "/b:64" allocates a 64k
- buffer, for DMA.
-
- 3) Check the documentation for your bus-mastering device and see
- if it can be configured to use the BIOS or any one of the standard
- DMA channels. QEMM can correct the problem if the BIOS or standard
- DMA channels are used.
-
- 4) THE BEST SOLUTION: Contact the maker of your bus-mastering
- device and see if they have a driver available which supports the
- VDS (Virtual DMA Services) specification. VDS is now an
- industry-wide specification supported by IBM, Microsoft and
- Quarterdeck, as well as many other hardware and software suppliers.
-
- A VDS driver allows a bus-mastering device to find the real
- physical address of its data when the processor is in Virtual 86
- mode.
-
- QEMM 5.00 (and later versions) supports the VDS specification.
- A VDS driver provides the best solution to this problem in terms of
- reliability, speed and memory efficiency.
-
- Q: I know I have a bus-mastering device on my computer, but I
- haven't seen any problem. Why not?
-
- A: It's possible that your bus-mastering device uses a standard
- DMA channel for DMA operations. QEMM-386 can correct the
- problem when standard DMA channels are used.
-
- Also, it is quite possible that your bus-mastering device was
- shipped with a VDS driver. Bus-mastering hard disk controllers are
- starting to ship with drivers that make VDS calls, and these
- drivers do not require the DB parameter or any other buffering. We
- expect that most bus-mastering devices will eventually include VDS
- drivers and therefore will not exhibit any problems when run in
- Virtual 86 mode.
-
- Copyright (C) 1991 by Quarterdeck Office Systems
- * * * E N D O F F I L E * * *
-